package ${table.basePackage}.mapper;

import java.util.List;
<#if table.templateType?has_content && table.templateType == 'multi'>
import java.util.Map;
</#if>

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
<#if table.templateType?has_content && table.templateType == 'multi'>
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
</#if>
import ${table.basePackage}.entity.${table.entityName};

/**
 * ${table.comment!table.entityName} - 数据访问层
 * 表: ${table.tableName}
 */
@Mapper
public interface ${table.entityName}Mapper extends BaseMapper<${table.entityName}> {
    
    /**
     * 根据条件查询${table.comment!table.entityName}列表
     *
     * @param filter 查询条件
     * @return ${table.comment!table.entityName}列表
     */
    List<${table.entityName}> selectByFilter(@Param("filter") ${table.entityName} filter);

<#if table.templateType?has_content && table.templateType == 'multi'>
    /**
     * 分页查询${table.comment!table.entityName}（联表查询）
     *
     * @param page 分页参数
     * @param filter 查询条件
     * @return ${table.comment!table.entityName}列表
     */
    List<${table.entityName}> selectPageJoin(Page<${table.entityName}> page, @Param("f") ${table.entityName} filter);
    
    /**
     * 查询${table.comment!table.entityName}列表（联表查询）
     *
     * @param filter 查询条件
     * @return ${table.comment!table.entityName}列表
     */
    List<${table.entityName}> selectListJoin(@Param("f") ${table.entityName} filter);
    
    <#if table.ext?? && table.ext.relations??>
    <#list table.ext.relations as r>
    /**
     * 插入${r.alias}关联数据
     *
     * @param mainId 主表ID
     * @param data 关联数据
     * @return 影响行数
     */
    int insertRel_${r.alias}(@Param("mainId") Long mainId, @Param("data") Map<String, Object> data);
    
    /**
     * 删除${r.alias}关联数据
     *
     * @param mainId 主表ID
     * @return 影响行数
     */
    int deleteRel_${r.alias}(@Param("mainId") Long mainId);
    
    </#list>
    </#if>
</#if>
}


